package dp;

import java.util.Scanner;

public class DigitDpHDU2089 {

	//不要62或者4
	
	public static void main(String[] args) {
		DigitDpHDU2089 object = new DigitDpHDU2089();
		object.getRes();
	}
	
	private void getRes() {
		Scanner scanner = new Scanner(System.in);
		init();
		while(scanner.hasNext()){
			int left = scanner.nextInt();
			int right = scanner.nextInt();
			if(left == 0 && right == 0){
				break;
			}
			int rightRes = solve(right + 1);
			int leftRes = solve(left);
			System.out.println("right " + rightRes + " leftRes: " + leftRes);
			System.out.println(rightRes - leftRes);
		}
		scanner.close();
	}

	//数据范围是0 ~ 1000000
	//dp[i][j]表示i位且最低位为j时满足条件的个数
	int[][] dp = new int[9][10];
	
	//我们先求dp数组
	public void init(){
		dp[0][0] = 1;
		for(int i = 1; i <= 7; i++){
			//枚举第i位可能出现的数 
			for(int j = 0; j < dp[0].length; j++){
				////枚举第i - 1位可能出现的数 
				for(int k = 0; k < dp[0].length; k++){
					//如果第i - 1位为2,第i位为6或第i位为4则不满足条件(我们不用判断i - 1位是不是4，因为从左往右判断的
					//肯定排除了
					// 刚开始写成了(k == 6 && j == 2),然后一直WA,调了一个小时都没有发现错误
					if( !(k == 2 && j == 6) && j != 4){
						dp[i][j] += dp[i - 1][k];
					}
				}
			}
		}
		
//		for(int i = 0; i < dp.length; i++){
//			for (int j = 0; j < dp[0].length; j++) {
//				System.out.print(dp[i][j] + "  ");
//			}
//			System.out.println();
//		}
	}
	
	//然后根据n枚举每一位
	public int solve(int n){
		if(n == 0){
			return 0;
		}
		int ans = 0;
		int length = 0;
		int[] digits = new int[9];	//表示n从右到左第i位是几
		//从右到左第i位是几
		while(n > 0){  
	        digits[++length] = n % 10;
	        n /= 10;
	    }
		//因为我们要判断前面一位是不是6，所以这里在最左边加了一位0
		digits[length + 1] = 0;
		for(int i = length; i > 0; i--){
			//枚举这一位的取值
			for(int j = 0; j < digits[i]; j++){
				if(j != 4 && !(j == 2 && digits[i + 1] == 6)){
					ans += dp[i][j];
				}
			}
			//如果已经出现了不满足条件的，退出
			//为什么这里就可以退出了呢
			//因为这道题是是这样判断的：1450 = 999(千位固定0) + 399(千位为1, 百位为0~3) + 50(千位为1, 百位为4)
			//当第i位是4时，我们知道后面不管是什么，肯定不满足条件了
			if (digits[i] == 4 || (digits[i] == 2 && digits[i + 1] == 6)) {
				break;
			}
		}
		return ans;
	}
}
